✅deck (Anki)とnote type (Anki)の設定をtable記法ではなくJSONにしたい
なぜtable記法にしたかは覚えていないtakker.icon
たしか、アイコン記法を使ってなにかを示したかったからだったかな
井戸端の方に書いたはずなので、いずれ参照する
しかし、tableをparseするよりJSONをparseするほうがやりやすいので、そっちにしたい
現状のdeck, note typeの型定義に会うようにJSONを設定する
ていうか、型定義をそのまま使えばいいか
https://code2svg.vercel.app/svg/L9-15/https://raw.githubusercontent.com/takker99/deno-anki/master/mod.ts#.svg https://github.com/takker99/deno-anki/blob/master/mod.ts#L9-L15
https://code2svg.vercel.app/svg/L28-43/https://raw.githubusercontent.com/takker99/deno-anki/master/mod.ts#.svg https://github.com/takker99/deno-anki/blob/master/mod.ts#L28-L43
https://code2svg.vercel.app/svg/L45-51/https://raw.githubusercontent.com/takker99/deno-anki/master/mod.ts#.svg https://github.com/takker99/deno-anki/blob/master/mod.ts#L45-L51
https://code2svg.vercel.app/svg/L53-58/https://raw.githubusercontent.com/takker99/deno-anki/master/mod.ts#.svg https://github.com/takker99/deno-anki/blob/master/mod.ts#L53-L58
案
updated以外を書くだけ
code:deck.json
{
"id": 44845749858349584,
"name": "system-english",
"description": "システム英単語系の問題集"
}
cssとlatex以外はすべて型定義どおりにJSONをコードブロックに書く
code:notetype.json
{
"id": 343480954545,
"name": "システム英単語用穴埋め問題",
"isCloze": true,
}
cssはcode:cssに、latexはpre.texとpost.texに書く
code:css
.card {
display: flex;
justify-content: center;
font-family: arial;
font-size: 20px;
color: black;
background-color: white;
}
.cloze {
font-weight: bold;
color: blue;
}
.nightMode .cloze {
color: lightblue;
}
複数のtemplateを指定できるから、ややこしくなりそう
まあcode:name.answer.htmlみたくすれば区別できるが……exampleの指定が難しくなる
exampleは指定できなくてもいいか。
code:Card 1.question.html
{{cloze:Text}}
{{type:Text}}
code:Card 1.answer.html
{{cloze:Text}}
<hr>
<a href="{{SourceURL}}">source</a>
hash tagは本文から削り、tagに追加する
それ以外はHTMLに変換する
❌:guid.Title.note
中心にfield nameを入れる
:guidとの境界がわからないのでパス
✅:guid.note.Title
末尾にfield nameを入れる
:guid.note(Title)
カッコも有りだが……カーソルを当てないとカッコ内が隠れてしまうから、視認性のために避けるべき
field nameの入っていないコードブロックは、fields先頭のfieldの値とみなす
これは後方互換性も兼ねている
(2023-09-01)しまった。これだとどこのfieldsからtagを抽出するか特定できないtakker.icon
scrapbox記法でparseした全てのfieldsから取り出すことにすればいいや
実装
現在
(deck|note type)が書き込まれたページを構文解析してデータを取得する
変更後
この場合parseDeckなどが不要になる
更新日時を取得したいので、引き続きLine[]からデータを取り出そう
テストデータ
2023-09-01
conflictが発生し、mergeするまでにすこし手こずった
12:52:07 テスト完了
default deckとnote typeが使われる
note typeにあるがnoteにないfieldは、空文字が挿入される
JSONを読み込めている
本当はalertで出したいところ
12:22:32 ここまででテストしたい
12:15:34 mod.tsのエラー取りまでやった
makeApkgの設計が微妙
変換したいpagesは外部から入れているのに、deckとnoteTypeの読み込みは自分でfetchしてしまっている
deckとnoteTypeの読み込み先も外部から注入したい
2つの引数を用意すればいい
notesを抽出したいページのリスト
任意のpagesにrandom accessできる函数
別のPRで出そう
2023-08-31
14:46:17 微修正
sb2md.tsを全ての記法にとりあえず対応した
deck.tsの微修正
14:46:59 noteType.tsもjson読み込みに移行する
15:00になったら、別のタスクを優先してやる
15:37:42 テスト開始
テスト用jsonデータを作成する
16:43:22 noteType.ts修正完了
テストはまだ不十分
あとはnote.tsをやればおわり
2023-08-30
22:04:47 terminalがcrashしてしまった
pushしてなかったのがつらい
なんとかwindows環境から抜き出せないか試してみる
2023-07-31
11:11:36 commitした
11:05:14 deck.tsの変更完了
テストはまだ足りなそう